package com.iwhalecloud.citybrain.flow.platform.manager.application.service;

import java.util.List;

import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.form.OptionItem;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.form.OuterSourceRequestVo;

/**
 * @author lilh
 * @date 2020/12/8 上午11:08
 */
public interface OuterDataSourceService {

    /**
     * 执行外部接口请求
     *
     * @param requestVo 请求参数
     * @return body
     */
    Object execute(OuterSourceRequestVo requestVo);


    /**
     * 预览配置好的外部数据源信息
     *
     * @param requestVo 请求参数
     * @return 结果
     */
    List<OptionItem> preRequestData(OuterSourceRequestVo requestVo);

    /**
     * 处理外部数据源配置
     *
     * @param fields 字段
     * @return 处理后的字段集合
     */
    List<Object> processDataSourceConfig(List<Object> fields);

    /**
     * 处理已经提交了表单数据后，对外部数据源的处理，从自定义表中获取固化数据
     *
     * @param field             字段
     * @param processInstanceId 实例id
     * @param taskId            任务id
     * @return 处理后的结果
     */
    List<Object> processDataSourceConfigAfterSubmit(List<Object> field, String processInstanceId, String taskId);

    /**
     * 判断是否已经提交了配置的外部数据
     *
     * @param processInstanceId 实例id
     * @param taskId            任务id
     * @return true, false
     */
    boolean hasSubmitDataSourceConfig(String processInstanceId, String taskId);
}
